数据库mysql 第二十天

前言

数据库分类:

    层次式数据库

    网络式数据库

    关系型数据库

数据库的分类

1、层次式数据库

2、网络式数据库

3、关系型数据库

数据库种类

具体来说数据库分为两大类:

关系型数据库:mysql、mariadb、/orcale、sql server/mssql、postgresql、db2

非关系型数据库:sqlite,access

使用方式的不同:

php普通的大部分网站都是以mysql和maridb为基础构建

政府机构网站基本以java为基础,使用sql server/mssql 或者oracle数据库为基础

存储形式的区别:

关系型数据库:以表格的形式存储,且以多文件形式存储。

非关系型数据库:以键值对的形式存储,单文件存储(应用于爬虫,php数组等)

sqlite:多应用于安卓存储数据,做缓存数据

access:access网站,多应用于小程序,小代码

redis  // 一般用于数据同步,缓存服务器,做中转

mongodb  //提供可扩展的高性能数据存储解决方案,介于关系型与非关系型数据库之间。

mysql数据库操作

展示数据库

mysql数据库命令:

展示数据库:

show databases;

创建数据库:

create database wordpress;

删掉数据库:

drop database wordpress;

mysql命令框的开启

主要命令有:mysql -uroot -proot;
创建数据库:
础关键词:create database wang; (创建wang库)

命令输入

创建用户表

基础关键词:create table test(); (创建test表)

应用实例:

create table `tb_users`(
     `id` int(10) not null auto_increment unique,
     `username` varchar(50) not null unique,
     `password` varchar(100) not null,
     `email` varchar(50) null,
     `nick_name` varchar(50) not null,
     `safe_point` varchar(50) null,
    `avatar_img` varchar(100) default '/images/default_avatarr.jpg',
     `reg_time` timestamp default current_timestamp(),
     `lastlogin_time` timestamp default current_timestamp(),
     `lastlogin_ip` varchar(255) null,
     primary key(`id`)
 );

新闻表:

 create table `tb_news`(
         `id` int(0) not null auto_increment,
         `title` varchar(255) not null,
         `contents` text not null,
         `author` varchar(50) not null,
         `add_time` timestamp default current_timestamp(),
         `hot` int(0) default 0,
         primary key (`id`)

 );

 评论表

 create table `tb_discuss`(
     `id` int(0) not null auto_increment,
     `new_id` int(0) not null,
     `discuss_content` text not null,
     `discuss_user` varchar(50) not null,
     `discuss_time` timestamp default current_timestamp(),
     primary key (`id`)

 );

注意: 如果报错,在没有打错关键字符的情况下,应该是英汉标点字符有问题,主要查看。

向表格内添加内容

基础关键词:insert into  table(表名)()values();

insert into `tb_users`(
    `username`,`password`,`email`,`nick_name`,`safe_point`
)VALUES(
    'admin','root','123@qq.com','小','明天'
);

注意: 有些数据是可以自动获取的,不能自动获取的部分,需要手动输入,这就需要用户分清数据来源。

附注:输入内容的不同在本库内,则按上面输入方式,若不再此库则按下面的规则录入:

insert into 'test'.'tb_users'()values();

删除内容

delete from 'tbest'.'tb_users' where 'id'=1;

或者

delete from 'tb_users' where 'username'='admin';

在删除内容中有多条件的方式存在 and or

delete from 'tb_users' where 'id'=1 and 'username'='admin';

解释:在数据库中id为1且username=admin的数据删除

delete from 'tb_users' where 'id'=1 or 'username'='admin';

解释:删除id为1的数据,及username为admin的数据

修改内容

基础关键词: update 'table' set 

update `tb_discuss` set `new_id`=3,`discuss_content`=123 where `id`='1';

update `tb_news` set `title` ='香港' WHERE 1;  所有的修改

update `tb_news` set `title` ='香港' WHERE 0;  不执行

解释:更新表tb_discuss内id为1的new_id和discuss_content的数据

查找内容

基础关键词:select * from 表  where 列表词 
SELECT * FROM `tb_news` where 'id' > 1;

select title,content from 'tb_news' where 'id' >1;

数据导入导出

数据导入

source 文件路径; 把文件导入

mysql -uroot -proot test < 文件路径;

mysqlimport  -uroot -proot test 文件路径;

数据导出

mysqldump -uroot -proot mysql > Desktop/mysql.sql;

mysqldump -uroot -proot --all-databases > Desktop/mysql.sql

其他

linux目录


mysql在linux的默认目录

ls /var/lib/mysql

将linux内的数据转移到windows中时,使用的密码还是linux的,因为linux存在于data内

windows下查看端口监听情况
netstat -ano | find "3306"

库的切换

use mysql;

show tables; 

show tables from mysql (展示mysql库中表)

切换数据库 use

use test (切换到test库)

show tables (展示所有表)

drop table user (删除uesr表)

查看当前用户
select user();

查看当前数据库:

select database();

来自韬博客

系统自存的库、表、列、信息

information_schema.schemata  //存储所有数据库基本信息
information_schema.tables //存储所有数据库的所有表基本信息
information_schema.columns //存储所有字段基本信息

查询语句

select version();     
select @@version;
//查看版本号
select user();
//当前连接的用户和ip
select session_user();
//查看当前的会话用户及其ip
select database();
//查看当前使用的数据库
concat();
group_concat();//不同版本
//连接

concat与substr共存的方式

mysql数据路支持字符与16进制的转换:

其中0x7e就是转换过后的admin

注释 –+ 以及 /**/ 或者/…/

distinct //去重

order by

order by 中asc为升序,是数据库的默认排列方式

select * from 表名 where 条件 order by 字段1 asc/desc 

desc 为降序,跟升序相反

select * from score s order by s.cno, s.degree desc;

双子段查询:

con为数据库默认升序,degree为降序;

select * from score s order by s.cno, s.degree desc;

模糊搜索(like )

//模糊搜索 a%=>a开头 %a%=>包含a %a=>a结尾

select * from [user] where u_name like '%精%' and u_name like '精%';

搜索u_name字段中开头和开始都有精的记录

读文件

load_file('filepath')  //绝对路径
select load_file('/etc/passwd');
create table data(
        data text
)
insert into data values(load_file(''));

写文件: into dumpfile "filepath" //绝对路径     直接写二进制文件
               into  outfile "filepath"    //绝对路径     写文本文档的文件
                select 123  into outfile/dumpfile '/var/www/html/eval.php';

mysql配置限制写文件

select hex load_file(('path'))     //本地处理二进制文件转化十六进制内容

select unhex(0x十六进制内容) into dumpfile "/tmp/a.exe" 
//服务器上执行,使用dumpfile保证文件不丢失

查询案例

要求 :不用select * 且在只知道表名和数据库名的情况下查询content表所有信息

查询所有数据库和指定数据库下所有表

select schema_name from information_schema.schemata;
select table_name from information_schema.tables where table_schema='test';

    查询指定表里所有的列明和查询指定表中列明信息
select column_name from information_schema.columns where table_schema='test'and table_name='users';
select username ,passwd from test.users;

mysql忘记密码解决方案


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zhumeng512@qq.com

文章标题:数据库mysql 第二十天

本文作者:弈少

发布时间:2019-08-12, 09:37:42

最后更新:2019-08-17, 10:40:32

原始链接:http://yoursite.com/2019/08/12/北京渗透测试第二十天 20190812/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

相册